package boot

import (
	"strings"
	"yunj/pkg/global"
	"yunj/pkg/yunj/app/service"
	"yunj/pkg/yunj/core/consts"
)

// 初始化暴露配置
func InitExposeConfig() {
	defaultImageUrl := service.SettingValue("sys", "default_img", "")
	if defaultImageUrl == "" {
		defaultImageUrl = consts.IMG_URI
	}
	if !strings.HasPrefix(defaultImageUrl, "http") {
		if !strings.HasPrefix(defaultImageUrl, "/") {
			defaultImageUrl = "/" + defaultImageUrl
		}
		defaultImageUrl = global.Config.App.Url + defaultImageUrl
	}

	adminEntrance := global.Config.GetAppAdminEntrance()

	config := map[string]any{
		// 默认值
		"def": map[string]any{
			// 表单时间日期字段范围分隔符
			"form_field_date_range": consts.FORM_FIELD_DATE_RANGE,
			// 默认图片地址
			"yunj_static_prefix": consts.YUNJ_STATIC_PREFIX,
			// 默认图片地址
			"image_url": defaultImageUrl,
			// 成功提示
			"success_msg": consts.SUCCESS_MSG,
		},
		"admin": map[string]any{
			// 后台系统入口
			"entrance": adminEntrance,
			// 后台登录地址
			"login_url": adminEntrance + "/login",
		},
		"file": map[string]any{
			// 上传地址
			"upload_url": global.Config.App.Admin.FileUploadUrl,
			// 上传图片格式规则
			"upload_img_ext_rules": service.GetAllowImageExtRules(),
			// 上传图片大小（单位MB）
			"upload_img_size": service.GetAllowUploadImageSize(),
			// 上传文件格式规则
			"upload_file_ext_rules": service.GetAllowFileExtRules(),
			// 上传文件大小（单位MB）
			"upload_file_size": service.GetAllowUploadFileSize(),
		},
	}

	global.ExposeConfig = config
}
